#ifndef WEATHER_FORECAST_H
#define WEATHER_FORECAST_H

#include <QWidget>
#include <QEvent>
#include <QMouseEvent>
#include <QPaintEvent>
#include <QPoint>
#include <QLabel>

#include <QPainter>//画板
#include <QPen>//画笔
#include <QBrush>//画刷

#include <QNetworkAccessManager>  // 网络访问管理器
#include <QNetworkReply>         // 网络响应
#include <QJsonDocument>         // JSON文档
#include <QJsonObject>           // JSON对象
#include <QJsonArray>            // JSON数组
#include <QUrlQuery>            //处理 URL 查询字符串
QT_BEGIN_NAMESPACE
namespace Ui { class WeatherForecast; }
QT_END_NAMESPACE

class WeatherForecast : public QWidget
{
    Q_OBJECT

public:
    WeatherForecast(QWidget *parent = nullptr);
    ~WeatherForecast();
public:
    QPoint Event_pos;
    bool Event_bool;

public:

    // 绘图事件
    void paintEvent(QPaintEvent *event);

private slots:
    void on_lineEdit_editingFinished();//搜索框的槽
    void on_label_3_linkActivated();//最高温度显示槽
    void on_label_4_linkActivated();//最低温度显示槽

    void onWeatherReplyFinished(QNetworkReply *reply); // 天气数据请求回调

private:
    Ui::WeatherForecast *ui;
    int h_temp[7];  // 存储7天最高温
    int l_temp[7];  // 存储7天最低温
    QNetworkAccessManager *manager;  // 网络请求管理器
    // 从city.txt加载城市数据到cityIdMap
    QString getCityIdFromFile(const QString &cityName);
    // 存储天气情况的数组
    QString weatherConditions[7];
    QString weatherTypes[7]; // 存储7天天气状况
    // 用于存储天气标签的容器
    QVector<QLabel *> weatherLabels;
};
#endif // WIDGET_H
